package cc.bookcloud.tool.ocr.common.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import cc.bookcloud.tool.ocr.util.StringUtil;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;

@Slf4j
public class EasyExcelListener extends AnalysisEventListener<ColumnProperty> {

    // 提取表结构信息
    private TableMeta tableMeta;


    @Override
    public void invoke(ColumnProperty data, AnalysisContext context) {
        log.info("[ (2) ]解析到的一条数据: excelRow = {}", data);
        tableMeta.add(data);
        // importList.add(data);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 解析完所有excel行, 保存到数据库或进行业务处理
        System.out.println("======================================"+tableMeta.getTableName());
//        if(!TableConvertDbScriptEngine.exist(tableMeta)){
            TableConvertDbScriptEngine.addTable(tableMeta);
            log.info("[ (3) *** 解析条数 ***] list = {}", tableMeta.getPropertyList().size());
//        }
    }

    @Override
    public void invokeHeadMap(Map<Integer, String> headerMap, AnalysisContext context) {
        String mark = headerMap.get(0);
        // 读取表的配置信息
        if (!StringUtil.isEmpty(mark) && "表名:".equalsIgnoreCase(mark)) {
            tableMeta = new TableMeta();
            tableMeta.setTableName(headerMap.get(1));
            tableMeta.setDescribe(headerMap.get(5));
            tableMeta.setOpType(headerMap.get(3));
            log.info("[ (1) *** 开始 ***]表头数据："+tableMeta.getTableName()+" excelHead= {}", headerMap);
        }
    }
}
